package com.heima.article.controller;

import com.heima.article.entity.ApArticle;
import com.heima.article.service.ApArticleService;
import com.heima.common.dtos.ResponseResult;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.article.dtos.ArticleHomeDto;
import com.heima.model.article.dtos.ArticleInfoDto;
import com.heima.model.article.dtos.UserBehaviorMsgDto;
import com.heima.model.media.dtos.WmNewsResultDTO;
import com.heima.model.wemedia.dto.ArticleCommentManagementVO;
import com.heima.model.wemedia.dto.CommentManagementQueryDTO;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class ArticleController {

    @Autowired
    private ApArticleService articleService;

    /**
     * feign调用，wemedia发布文章调用
     */
    @PostMapping("/api/v1/article/save")
    public Long createArticle(@RequestBody WmNewsResultDTO dto) {
        return articleService.createArticle(dto);
    }

    /**
     * app首页显示文章数据
     */
    @PostMapping("/api/v1/article/load")
    public ResponseResult<List<ApArticle>> load(@RequestBody ArticleHomeDto dto) {
        List<ApArticle> articles = articleService.load(dto);
        return ResponseResult.ok(articles);
    }

    /**
     * 用户向上拖动页面，查询更多文章
     */
    @PostMapping("/api/v1/article/loadmore")
    public ResponseResult<List<ApArticle>> loadmore(@RequestBody ArticleHomeDto dto) {
        List<ApArticle> articles = articleService.loadmore(dto);
        return ResponseResult.ok(articles);
    }

    /**
     * 用户向下拖动页面，查询最新文章
     */
    @PostMapping("/api/v1/article/loadnew")
    public ResponseResult<List<ApArticle>> loadnew(@RequestBody ArticleHomeDto dto) {
        List<ApArticle> articles = articleService.loadnew(dto);
        return ResponseResult.ok(articles);
    }

    /**
     * 这是一个feign接口，分页查询，导入到ES
     */
    @GetMapping("/api/v1/article/findByPage")
    public List<ArticleDto> findByPage(@RequestParam("page") int page, @RequestParam("size") int size) {
        return articleService.findByPage(page, size);
    }

    /**
     * 这是一个feign接口，根据id查询详情
     */
    @GetMapping("/api/v1/article/findById/{id}")
    public ArticleDto findById(@PathVariable("id") Long id) {
        return articleService.findById(id);
    }

    /**
     * 这是一个feign接口，根据 wm_user_id, wm_news_id 删除文章
     */
    @DeleteMapping("/api/v1/article/delArticle")
    @ApiOperation("删除文章")
    public void delArticleByNewsId(@RequestParam("wmUserId") Integer wmUserId,
                                   @RequestParam("wmNewsId") Integer wmNewsId) {
        articleService.delArticleByNewsId(wmUserId, wmNewsId);
    }

    /**
     * 加载文章行为-数据回显
     *
     * @param dto
     * @return
     */
    @PostMapping("/api/v1/article/load_article_behavior")
    public ResponseResult<UserBehaviorMsgDto> loadArticleBehavior(@RequestBody ArticleInfoDto dto) {
        UserBehaviorMsgDto userBehaviorMsgDto = articleService.loadArticleBehavior(dto);
        return ResponseResult.ok(userBehaviorMsgDto);

    }

    /**
     * feign 调用，查询对应作者文章的评论数
     *
     * @param dto
     * @return
     */
    @PostMapping("/api/v1/article/find_news_comments")
    public List<ArticleCommentManagementVO> findNewsComments(@RequestBody CommentManagementQueryDTO dto) {
        return articleService.findNewsComments(dto);
    }

    /**
     * feign 调用，根据文章id查询自媒体文章id
     * @param id
     * @return
     */
    @PostMapping("/api/v1/article/find_wmuserId")
    public Integer findWmuserIdByArticleId(@RequestBody Long id) {
        return articleService.findWmNewsIdByArticleId(id);
    }

    /**
     * feign调用，文章打开关闭评论
     * @param articleDto
     */
    @PostMapping("/api/v1/article/update_article_enableComment")
    public  void updateArticleEnableComment(@RequestBody ArticleDto articleDto){
        articleService.updateArticleEnableComment(articleDto);
    }
}
